#include <bits/stdc++.h>
#define int long long 
using namespace std;

const int maxn = 2e5 + 10;
int idx=2; // 1 为根
int nex[maxn][26];
int cnt[maxn]; // 记录这个前缀出现了多少次
int n, m;

void insert(char s[]){
	int root=1;
	int len=strlen(s+1);
	for(int i=1;i<=len;i++){
		if(nex[root][s[i]-'a']==0){ // 没有
			// 动态开点
			nex[root][s[i]-'a']=idx++;
		}
		root=nex[root][s[i]-'a'];
		cnt[root]++;
	}
}

int check(char t[]){
	int root=1;
	int len=strlen(t+1);
	for(int i=1;i<=len;i++){
		if(nex[root][t[i]-'a']==0){
			return 0;
		}
		root=nex[root][t[i]-'a'];
	}
	return cnt[root];
}



void solve(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		char s[maxn];
		cin>>s+1;
		insert(s);
	}
	
	for(int i=1;i<=m;i++){
		char t[maxn];
		cin>>t+1;
		cout<<check(t)<<'\n';
	}
}

signed main(){
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	solve();
	return 0;
}
